const jwt = require("jsonwebtoken");
const {
  ACCOUNT_OR_PASSWORD_IS_REQUIRED,
  ACCOUNT_IS_NOT_EXISTS,
  PASSWORD_IS_INCORRENT,
} = require("../config/error-constants");
const userService = require("../service/user.service");
const md5password = require("../utils/md5-password");

/* 登录的验证 */
const verifyLogin = async (ctx, next) => {
  const { account, password } = ctx.request.body;
  //   console.log(account, password);
  // 1.判断用户名和密码是否为空
  if (!account || !password) {
    return ctx.app.emit("error", ACCOUNT_OR_PASSWORD_IS_REQUIRED, ctx);
  }

  // 2.查询该用户是否在数据库中存在
  const users = await userService.findUserByACCOUNT(account);
  // console.log("----123", users);
  const user = users[0];

  if (!users.length) {
    return ctx.app.emit("error", ACCOUNT_IS_NOT_EXISTS, ctx);
  }

  // 查询该用户是否删除

  // 3.查询数据库中密码和用户传递过来的密码是否一致
  // 查询到的用户user的密码【md5加密了】等于用户输入的密码，则可以登录
  if (user.password !== md5password(password)) {
    return ctx.app.emit("error", PASSWORD_IS_INCORRENT, ctx);
  }

  // 4.将user对象保存到ctx里面，在下一个中间件进行颁发token
  ctx.userInfo = user;

  await next();
};

module.exports = {
  verifyLogin,
};
